package main

import "fmt"

// 父亲结构体
type Animal struct {
	Name string
}

func (a Animal) run() {
	fmt.Printf("%v 在运动\n", a.Name)
}

// 子结构体
type Dog struct {
	Age    int
	Animal //结构体嵌套（继承）
}

/*
   一个结构体嵌套一个包含另一个结构体或结构体指针
*/

type People struct {
	gender string
}

type Man struct {
	name    string
	*People //结构体嵌套（继承） 存了个指针地址
}

func (d Dog) wang() {
	fmt.Printf("%v 岁了\n", d.Age)
}

func main() {
	var d = &Dog{
		Age:    3,
		Animal: Animal{Name: "旺财"},
	}
	d.run()
	d.wang()
	/*
			 旺财 在运动
		     3 岁了
	*/

	var m Man = Man{
		name: "小罗",
		People: &People{
			gender: "男",
		},
	}
	fmt.Printf("%#v\n", m)
	//main.Man{name:"小罗", People:(*main.People)(0x14000102030)}
	fmt.Printf("%#v\n", *m.People)
	// main.People{gender:"男"}
}
